import type from "./TypeUtil";

String.prototype.isInt = function () {
  let regex = /(^[1-9][0-9]*$)|(^[0-9]$)/;
  return regex.test(this);
}
String.prototype.isFloat = function () {
  let regex = /(^[1-9][0-9]*[\.]{0,1}[0-9]*[0-9]$)|(^[0].[0-9]*[0-9]$)|(^[0-9]$)/;
  return regex.test(this);
}
String.prototype.more = function () {
  return this > 0;
}
String.prototype.trim = function () {
  return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.ltrim = function () {
  return this.replace(/(^\s*)/g, "");
}

String.prototype.rtrim = function () {
  return this.replace(/(\s*$)/g, "");
}

String.prototype.isEmpty = function () {
  return this.replace(/(\s*$)/g, "") == "";
}

String.prototype.isZip = function () {
  let regex = /^\d{6}$/;
  return regex.test(this);
}
String.prototype.isPhone = function () {
  let regex = /^\d[0-9\-]+\d$/;
  return regex.test(this);
}
String.prototype.isMobile = function () {
  let regex = /^\d[\d]{9,15}\d$/;
  return regex.test(this);
}
String.prototype.isLetterNumber = function () {
  let regex = /^[0-9a-zA-Z\-]+$/;
  return regex.test(this);
}
String.prototype.isLetterMore = function () {//有逗号分割的情况
  let regex = /^[0-9a-zA-Z,\-]+$/;
  return regex.test(this);
}
String.prototype.isNumber = function () {
  let regex = /(^[\-[0-9\.]*[0-9]$)|(^[0-9\.]*[0-9]$)/;
  return regex.test(this);
}
String.prototype.isBankAccount = function () {//银行卡号
  let regex = /^[0-9 ]{19,25}$/;
  return regex.test(this);
}
String.prototype.isEmail = function () {
  let regex = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|com|gov|mil|org|edu|int|name|asia)$";
  let re = new RegExp(regex);
  if (this.search(re) == -1) {
    return false;
  } else {
    return true;
  }
}

class StringUtil {
  isInt = function (val) {
    if (type.isString(val)) {
      return val.isInt();
    }
    return false;
  }
  isFloat = function (val) {
    if (type.isString(val)) {
      return val.isFloat();
    }
    return false;
  }
  more = function (val) {
    if (type.isString(val)) {
      return val.more();
    }
    return false;
  }
  trim = function (val) {
    if (type.isString(val)) {
      return val.trim();
    }
    return false;
  }
  ltrim = function (val) {
    if (type.isString(val)) {
      return val.ltrim();
    }
    return false;
  }
  rtrim = function (val) {
    if (type.isString(val)) {
      return val.rtrim();
    }
    return false;
  }
  isEmpty = function (val) {
    if (type.isString(val)) {
      return val.isEmpty();
    }
    return false;
  }
  isZip = function (val) {
    if (type.isString(val)) {
      return val.isZip();
    }
    return false;
  }
  isPhone = function (val) {
    if (type.isString(val)) {
      return val.isPhone();
    }
    return false;
  }
  isMobile = function (val) {
    if (type.isString(val)) {
      return val.isMobile();
    }
    return false;
  }
  isLetterNumber = function (val) {
    if (type.isString(val)) {
      return val.isLetterNumber();
    }
    return false;
  }
  isLetterMore = function (val) {
    if (type.isString(val)) {
      return val.isLetterMore();
    }
    return false;
  }
  isNumber = function (val) {
    if (type.isString(val)) {
      return val.isNumber();
    }
    return false;
  }
  isBankAccount = function (val) {
    if (type.isString(val)) {
      return val.isBankAccount();
    }
    return false;
  }
  isEmail = function (val) {
    if (type.isString(val)) {
      return val.isEmail();
    }
    return false;
  }
}

const stringUtil = new StringUtil();
export default stringUtil
